//
//  SYNetworkingConstant.h
//  SYBaseSDK
//
//  Created by ligq on 2020/3/26.
//  Copyright © 2020 jazzforlove@163.com. All rights reserved.
//

#ifndef SYNetworkingConstant_h
#define SYNetworkingConstant_h



// 项目打包上线都不会打印日志，因此可放心。
#ifdef DEBUG
#define SYAppLog(s, ... ) NSLog( @"[%@ in line %d] ===============>%@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define SYAppLog(s, ... )
#endif

/*!
 *
 *  下载进度
 *
 *  @param bytesRead                 已下载的大小
 *  @param totalBytesRead            文件总大小
 *  @param totalBytesExpectedToRead 还有多少需要下载
 */
typedef void (^SYDownloadProgress)(int64_t bytesRead,
                                    int64_t totalBytesRead);

typedef SYDownloadProgress SYGetProgress;
typedef SYDownloadProgress SYPostProgress;

/*!
 *
 *  上传进度
 *
 *  @param bytesWritten              已上传的大小
 *  @param totalBytesWritten         总上传大小
 */
typedef void (^SYUploadProgress)(int64_t bytesWritten,
                                  int64_t totalBytesWritten);

typedef NS_ENUM(NSUInteger, SYHTTPMethodType) {
  kSYHTTPMethodTypeGet = 1, // 默认
  kSYHTTPMethodTypePost  = 2 // post请求
};
typedef NS_ENUM(NSUInteger, SYResponseType) {
  kSYResponseTypeJSON = 1, // 默认
  kSYResponseTypeXML  = 2, // XML
  // 特殊情况下，一转换服务器就无法识别的，默认会尝试转换成JSON，若失败则需要自己去转换
  kSYResponseTypeData = 3
};

typedef NS_ENUM(NSUInteger, SYRequestType) {
  kSYRequestTypeJSON = 1, // 默认
  kSYRequestTypePlainText  = 2 // 普通text/html
};

typedef NS_ENUM(NSInteger, SYNetworkStatus) {
    kSYNetworkStatusUnknown          = -1,//未知网络
    kSYNetworkStatusNotReachable     = 0,//网络无连接
    kSYNetworkStatusReachableViaWWAN = 1,//2，3，4G网络
    kSYNetworkStatusReachableViaWiFi = 2,//WIFI网络
};

@class NSURLSessionTask;

// 请勿直接使用NSURLSessionDataTask,以减少对第三方的依赖
// 所有接口返回的类型都是基类NSURLSessionTask，若要接收返回值
// 且处理，请转换成对应的子类类型
typedef NSURLSessionTask SYURLSessionTask;
typedef void(^SYResponseSuccess)(id response);
typedef void(^SYResponseFail)(NSError *error);

#endif /* SYNetworkingConstant_h */
